<?php
class HomeController extends AppController{
    var $name = 'Home';
    var $uses = array('Empresa','CentroDist','Aro','ArosEmpresa','ArosCentroDist',
        'Tercero','Usuario','Grupo', 'TipoDocumento','Ejercicio','ArosAco','Aco',
        'Almacene','ProductoTipo','TipoOperacionesAlmacene');
    var $helpers = array('Html', 'Form', 'Javascript', 'Codigo', 'Time','GetList');
    var $components = array('RequestHandler', 'Acl');

    function index(){
        // ------- EMPRESA Y DEPOSITO (LISTA Y ACTIVO)
        // buscando aro
        $aro = $this->Aro->find('first', array(
            'conditions'=>array('model'=>'Usuario','foreign_key'=>$this->_usuario['id']),
            'recursive'=>-1
        ));
        // buscando empresas
        $empresas = $this->ArosEmpresa->find('list', array(
            'conditions'=>array('aro_id'=>$aro['Aro']['id']),
            'fields'=>array('empresa_id')
        ));
        // buscando centros de distribucion
        $centros = $this->ArosCentroDist->find('list', array(
            'conditions'=>array('aro_id'=>$aro['Aro']['id']),
            'fields'=>array('centro_dist_id')
        ));
        // sino se encuentra a nivel de usuario se busca a nivel de grupo
        if (empty($empresas) || empty($centros)){
            // buscando aro
            $aro = $this->Aro->find('first', array(
                'conditions'=>array('model'=>'Grupo','foreign_key'=>$this->_usuario['grupo_id']),
                'recursive'=>-1
            ));
            // buscando empresas
            if (empty($empresas))
                $empresas = $this->ArosEmpresa->find('list', array(
                    'conditions'=>array('aro_id'=>$aro['Aro']['id']),
                    'fields'=>array('empresa_id')
                ));
            // buscando centros de distribucion
            if (empty($centros))
                $centros = $this->ArosCentroDist->find('list', array(
                    'conditions'=>array('aro_id'=>$aro['Aro']['id']),
                    'fields'=>array('centro_dist_id')
                ));
        }
        if (empty($empresas)){
            $condEmpresa = array('Empresa.id'=>$this->empresaId());
        } else {
            $condEmpresa = array('Empresa.id'=>$empresas);
        }
        if (empty($centros)){
            $condCentro = array('CentroDist.id'=>$this->centroDistId());
        } else {
            $condCentro = array('CentroDist.id'=>$centros);
        }
        $empresas = $this->Empresa->find('list', array(
            'conditions'=>array('activo'=>1)+$condEmpresa,
            'order'=>'Empresa.codigo',
            'fields'=>array('Empresa.id', 'Empresa.razon_social')
        ));
        $centroDists =  $this->CentroDist->find('list', array(
            'conditions'=>array('activo'=>1)+$condCentro,
            'order'=>'CentroDist.codigo',
            'fields'=>array('CentroDist.id', 'CentroDist.descripcion_corta')
        ));
                       
        $tipos = $this->getTipoDocumentos();
        $almacenes = $this->getAlmacenes(); 
        $_centros = $this->CentroDist->find('list', array(
            'fields'=>array('id'),
            'conditions'=>array('CentroDist.ciudad'=>$this->_usuario['CentroDist']['ciudad'])
        ));
		
        $almacenes = $this->getAlmacenes();
        $almacenesLocales = $this->getAlmacenes($_centros);
								      
        $tipoProducto = $this->getTipoProductos();
        $this->set(compact('mensajes','mensajes','q','empresas','centroDists','tipos','carpetas',
            'almacenesLocales','almacenes','tipoProducto','tipoIngresos','tipoSalidas','tipoTransferencias'));
        $this->set('limite',$this->limite);
        $this->set('usuario',$this->_usuario);
        $this->set('ejercicio',$this->_ejercicio);
		 $aros = $this->Aro->find('list',array(
            'conditions'=>array(
                'or'=>array(
                    0=>array('and'=>array('model'=>'Usuario','foreign_key'=>$this->_usuario['id'])),
                    1=>array('and'=>array('model'=>'Grupo','foreign_key'=>$this->_usuario['grupo_id']))
                )
            ),
            'recursive'=>-1
        ));
        
        // ------- Comienza la construccion del Menu --------
        if ($this->Session->check('menu')){
            $acos = $this->Session->read('menu');
        } else {
            $permitidos = $this->ArosAco->find('list',array( // obtengo los acos a los que tiene acceso
                'fields'=>array('aco_id'),
                'conditions'=>array('aro_id'=>array_values($aros)),
                'recirsive'=>-1
            ));
            $controladores = $this->Aco->find('list',array( // obtengo los controladores a los que tiene acceso
                'conditions'=>array('parent_id'=>$permitidos),
                'fields'=>array('id'),
                'recirsive'=>-1
            ));
            $this->Aco->bindModel(array('belongsTo'=>array('Parent'=>array('className'=>'Aco','foreignKey'=>'parent_id'))));
            $this->Aco->unBindModel(array('hasMany'=>array('Aro')));
            $acos = $this->Aco->find('all',array( // obtengo los acos a los que tiene acceso
                'conditions'=>array(
                    'OR'=>array(
                        'Aco.id'=>$permitidos,
                        'Aco.parent_id'=>array_merge($permitidos,$controladores)
                    )
                ),
                'order'=>array('Aco.orden'),
                'contain'=>array(
                    'Parent'=>array()
                )
            ));
            // obteniendo hijos
            for ($i = 0; $i < count($acos); $i++){ // obtengo los hijos
                if (empty($acos[$i]['Aco']['parent_id'])) continue;
                $children = $this->Aco->find('all',array(
                    'conditions'=>array(
                        'Aco.parent_id'=>$acos[$i]['Aco']['id'],
                            'Aco.orden is not null',
                            'trim(Aco.orden) <>'=>''
                    ),
                    'contain'=>array(
                        'Parent'
                    )
                ));
                foreach ($children as $child){
                    $j = 0;
                    $flag = false;
                    while($j < count($acos) && !$flag){
                        $flag = $acos[$i]['Aco']['id'] == $child['Aco']['id'];
                        if (!$flag) $j++;
                    }
                    if (!$flag && !empty($aco['Aco']['titulo'])&&
                            trim($aco['Aco']['titulo'])!=''){
                        array_push($acos, $child);
    //                    echo '<pre>'.print_r($child,true).'</pre>';
                    }
                }
            }
    //        die;
            // obteniendo padres
            for ($x = 0; $x < 3; $x++)
            for ($i = 0; $i < count($acos); $i++){
                if (empty($acos[$i]['Aco']['parent_id'])) continue;
                $j = 0;
                $flag = false;
                while($j < count($acos) && !$flag){
                    $flag = $acos[$i]['Aco']['parent_id'] == $acos[$j]['Aco']['id'];
                    if (!$flag) $j++;
                }
                if (!$flag ){
                    $aco = $this->Aco->find('first',array(
                        'conditions'=>array(
                            'Aco.id'=>$acos[$i]['Aco']['parent_id'],
                            'Aco.orden is not null',
                            'trim(Aco.orden) <>'=>''
                        ),
                        'contain'=>array(
                            'Parent'
                        )
                    ));
                    array_push($acos,$aco);
                }
            }

            // odenando
            $res = array();
            for ($i = 0; $i < count($acos)-1; $i++){
                if (!isset($acos[$i])) continue;
                for ($j = $i + 1; $j < count($acos); $j++){
                    if (!isset($acos[$j])) continue;
                    if ($acos[$i]['Aco']['orden'].' ' > $acos[$j]['Aco']['orden'].' '){
                        $tmp = $acos[$i];
                        $acos[$i] = $acos[$j];
                        $acos[$j] = $tmp;
                    }
                }
                if (!empty($acos[$i]['Aco']['titulo'])) {
    //                unset($acos[$i]);
                    array_push($res, $acos[$i]);
                }
            }
            $this->Session->write('menu',$acos);
//        echo '<pre>'.print_r($res,true).'</pre>';die;
        }
        $this->set(compact('acos'));
    }

    function index1(){
        // buscando aro
        $aro = $this->Aro->find('first', array(
            'conditions'=>array('model'=>'Usuario','foreign_key'=>$this->_usuario['id']),
            'recursive'=>-1
        ));
        // buscando empresas
        $empresas = $this->ArosEmpresa->find('list', array(
            'conditions'=>array('aro_id'=>$aro['Aro']['id']),
            'fields'=>array('empresa_id')
        ));
        // buscando centros de distribucion
        $centros = $this->ArosCentroDist->find('list', array(
            'conditions'=>array('aro_id'=>$aro['Aro']['id']),
            'fields'=>array('centro_dist_id')
        ));
        // sino se encuentra a nivel de usuario se busca a nivel de grupo
        if (empty($empresas) || empty($centros)){
            // buscando aro
            $aro = $this->Aro->find('first', array(
                'conditions'=>array('model'=>'Grupo','foreign_key'=>$this->_usuario['grupo_id']),
                'recursive'=>-1
            ));
            // buscando empresas
            if (empty($empresas))
                $empresas = $this->ArosEmpresa->find('list', array(
                    'conditions'=>array('aro_id'=>$aro['Aro']['id']),
                    'fields'=>array('empresa_id')
                ));
            // buscando centros de distribucion
            if (empty($centros))
                $centros = $this->ArosCentroDist->find('list', array(
                    'conditions'=>array('aro_id'=>$aro['Aro']['id']),
                    'fields'=>array('centro_dist_id')
                ));
        }

        if (empty($empresas)){
            $condEmpresa = array('Empresa.id'=>$this->_usuario['Tercero']['empresa_id']);
        } else {
            $condEmpresa = array('Empresa.id'=>$empresas);
        }
        if (empty($centros)){
            $condCentro = array('CentroDist.id'=>$this->_usuario['Tercero']['centro_dist_id']);
        } else {
            $condCentro = array('CentroDist.id'=>$centros);
        }

        $empresas = $this->Empresa->find('list', array(
            'conditions'=>array('activo'=>1)+$condEmpresa,
            'order'=>'Empresa.codigo',
            'fields'=>array('Empresa.id', 'Empresa.razon_social')
        ));
        $centroDists =  $this->CentroDist->find('list', array(
            'conditions'=>array('activo'=>1)+$condCentro,
            'order'=>'CentroDist.codigo',
            'fields'=>array('CentroDist.id', 'CentroDist.descripcion')
        ));

        //verificando si se hizo busqueda por formulario
        if(!empty($this->data['Mensaje']['busqueda'])){
                $q = str_replace(';', '|', $this->data['Mensaje']['busqueda']);
        //verificando si se hizo busqueda por parametro url
        } else if(!empty($this->params['url']['q'])){
                $q = str_replace(';', '|', $this->params['url']['q']);
        //verificando si se hizo busqueda por valor url
        } else if(!empty($q)){
                $q = str_replace(';','|',$q);
        } else {
                $q = '';
        }

        $aros = $this->Aro->find('list',array(
            'conditions'=>array(
                'or'=>array(
                    0=>array('and'=>array('model'=>'Usuario','foreign_key'=>$this->_usuario['id'])),
                    1=>array('and'=>array('model'=>'Grupo','foreign_key'=>$this->_usuario['grupo_id']))
                )
            ),
            'recursive'=>-1
        ));
        $conditions['aro_id'] = $aros;
        //armando condiciones si q tiene valor
        if(!empty($q)){
                $conditions['OR'] = array(
                );
        }

        //ejecutando query
        $this->Mensaje->Behaviors->attach('Containable');
        $this->paginate['Mensaje'] = array(
            'limit'=>$this->limite,
            'order'=>array('Mensaje.id' =>'DESC'),
            'fields'=>array(
                'id',
                'empresa_id',
                'centro_dist_id',
                'aro_id',
                'carpeta_id',
                'para',
                'asunto',
                'fecha',
                'contenido',
                'leido',
                'fecha_lectura',
                'activo'),
            'conditions'=>$conditions,
            'contain' => array(
                'CentroDist'=>array(
                    'fields'=>array('descripcion','descripcion_corta','simbolo'),
                ),
                'Aro'=>array(
                    'fields'=>array('id','model','foreign_key'),
                )
            )
        );
        $mensajes = $this->paginate('Mensaje');
        foreach ($mensajes as &$mensaje){
            if ($mensaje['Aro']['model']=='Usuario'){
                $this->Usuario->recursive = -1;
                $usuario = $this->Usuario->read(null,$mensaje['Aro']['foreign_key']);
                $mensaje['Aro']['alias'] = $usuario['Usuario']['usuario'];

                $this->Grupo->recursive = -1;
                $grupo = $this->Grupo->read(null,$usuario['Usuario']['grupo_id']);
                $mensaje['Aro']['grupo'] = $grupo['Grupo']['descripcion'];
            } else {
                $this->Grupo->recursive = -1;
                $grupo = $this->Grupo->read(null,$mensaje['Aro']['foreign_key']);
                $mensaje['Aro']['alias'] = $grupo['Grupo']['descripcion'];
                $mensaje['Aro']['grupo'] = $grupo['Grupo']['descripcion'];
            }
        }

        //estableciendo valores para vista
        if(!empty($this->params['url']['limite'])){
                $this->limite = $this->params['url']['limite'];
        }
        $this->data['Mensaje']['pagesize'] = $this->paginate['limite'] = $this->limite;
        $this->data['Mensaje']['busqueda'] = str_replace('|',';',$q);

        $tipodocumentos = $this->TipoDocumento->find('list',array('fields'=>array('id','simbolo')));
        $tipos = '';
        $tipos = '[';
        foreach ($tipodocumentos as $k=>$tipo){
            $tipos .= "{'value':'$k','text':'$tipo'},";
        }
        $tipos .= ']';

        $this->set(compact('mensajes','mensajes','q','empresas','centroDists','tipos'));
        $this->set('limite',$this->limite);
        $this->set('usuario',$this->_usuario);
        $this->set('ejercicio',$this->_ejercicio);
    }


    function getTipoIngresos(){
        $tipoIngresos = $this->TipoOperacionesAlmacene->find('list',array(
            'fields'=>array('id','descripcion'),
            'conditions'=>array(
                'empresa_id'=>$this->empresaId(),
                'activo'=>true,
                'entrega'=>true
            ),
            'order'=>'id'
        ));
        $tipos = '';
        $tipos = '[';
        foreach ($tipoIngresos as $k=>$tipo){
            $tipo = substr($tipo,8);
            $tipos .= "{'value':'$k','text':'$tipo'},";
        }
        $tipos .= ']';
        return $tipos;
    }
    
    function getTipoSalidas(){
        $tipoSalidas = $this->TipoOperacionesAlmacene->find('list',array(
            'fields'=>array('id','descripcion'),
            'conditions'=>array(
                'empresa_id'=>$this->empresaId(),
                'activo'=>true,
                'entrega'=>false
            ),
            'order'=>'id'
        ));
        $tipos = '';
        $tipos = '[';
        foreach ($tipoSalidas as $k=>$tipo){
            $tipo = substr($tipo,0,20);
            $tipos .= "{'value':'$k','text':'$tipo'},";
        }
        $tipos .= ']';
        return $tipos;
    }
    
    function getTipoTransferencias(){
        $tipoTransferencias = $this->TipoTransferencia->find('list',array(
            'fields'=>array('id','descripcion'),
            'conditions'=>array(
                'empresa_id'=>$this->empresaId(),
                'activo'=>true
            ),
            'order'=>'id'
        ));
        $tipos = '';
        $tipos = '[';
        foreach ($tipoTransferencias as $k=>$tipo){
            $tipo = substr($tipo,0,20);
            $tipos .= "{'value':'$k','text':'$tipo'},";
        }
        $tipos .= ']';
        return $tipos;
    }

    function getTipoDocumentos(){
        $tipodocumentos = $this->TipoDocumento->find('list',array('fields'=>array('id','simbolo')));
        $tipos = '';
        $tipos = '[';
        foreach ($tipodocumentos as $k=>$tipo){
            $tipos .= "{'value':'$k','text':'$tipo'},";
        }
        $tipos .= ']';
        return $tipos;
    }

    function getAlmacenes($centroDistId=null, $plain=false){
        if(empty($centroDistId)){
                $centroDistId = $this->centroDistId();
        }
        if(!is_array($centroDistId)){
        	$centroDistId = array($centroDistId);
        }
		
        $alms = $this->Almacene->find('all',array(
            'fields'=>array('id','codigo','substr(descripcion_corta,1,11) as "Almacene__descripcion"'),
            'conditions'=>array(
                'activo'=>true,
                'empresa_id'=>$this->empresaId(),
                'centro_dist_id'=>$centroDistId,
            ),
            'order'=>'codigo',
            'recursive'=>-1
        ));
       
        if(!empty($plain) && $plain == true){
                return $alms;
        }
		
        $almacenes = array();
        foreach ($alms as $k=>$alm){
            $almacenes[] = sprintf("{'value':'%s','text':'%s %s'}",$alm['Almacene']['id'],$alm['Almacene']['codigo'],$alm['Almacene']['descripcion']);
        }
        $almacenes = '['.implode(',',$almacenes).']';
        return $almacenes;
    }

    function getTipoProductos(){
        $tipoProd = $this->ProductoTipo->find('all',array(
            'conditions'=>array(
                'activo'=>true,
                'empresa_id'=>$this->empresaId(),
            ),
            'order'=>'descripcion',
            'recursive'=>-1
        ));
        $tipoProd = array_merge(array(array('ProductoTipo'=>array('id'=>'','descripcion'=>'Todos'))),$tipoProd);
        $tipoProducto = '[';

        foreach ($tipoProd as $k=>$tipo){
            $tipoProducto .= sprintf("{'value':'%s','text':'%s'},",$tipo['ProductoTipo']['id'],$tipo['ProductoTipo']['descripcion']);
        }
        $tipoProducto .= ']';
        return $tipoProducto;
    }

    function view($id = null){
        if ($this->RequestHandler->isAjax()) {
            $this->ajax_html();
        }
        if (empty($id)){
            if ($this->RequestHandler->isAjax()){
                echo '<h2>Error: No se ha podido ubicar el mensaje solicitado</h2>';
                $mensaje = array();
            } else {
                $this->Session->setFlash('El Identificador de mensaje no es valido');
                $this->redirect(array('action'=>'index'));
            }
        } else { 
            $mensaje = $this->Mensaje->find('first', array(
                'conditions'=>array('Mensaje.id'=>$id),
                'contain' => array(
                    'CentroDist'=>array(
                        'fields'=>array('descripcion','descripcion_corta','simbolo'),
                    ),
                    'Aro'=>array(
                        'fields'=>array('id','model','foreign_key'),
                    ),
                    'UsuarioCreacion'=>array(
                        'fields'=>array('email'),
                    )
                )
            ));
            if (!$mensaje['Mensaje']['leido']){
                $mensaje['Mensaje']['leido'] = true;
                $mensaje['Mensaje']['fecha_lectura'] = 'now';
                if (!$this->Mensaje->save($mensaje))
                    $this->Session->setFlash('No se ha podido marcar el mensaje como leido');
            }
        }
        $this->set(compact('mensaje','id'));
    }

    function add($id = null){
        if ($this->RequestHandler->isAjax()) {
            $this->ajax_html();            
        } //else $this->redirect(array('action'=>'index'));
        if (!empty($this->data)){
            $aros = $this->Aro->find('first',array(
                'fields'=>array('id'),
                'conditions'=>array(
                    'model'=>'Usuario',
                    'foreign_key'=>$this->_usuario['id']
                ),
                'recursive'=>-1
            ));
            $this->data['Mensaje']['empresa_id'] = $this->empresaId();
            $this->data['Mensaje']['centro_dist_id'] = $this->centroDistId();
            $this->data['Mensaje']['aro_id'] = $aros['Aro']['id'];
            $this->data['Mensaje']['carpeta_id'] = 2; // bandeja de salida
            $this->data['Mensaje']['fecha'] = 'now()';
            $this->data['Mensaje']['leido'] = true;
            $this->data['Mensaje']['fecha_lectura'] = 'now()';
            $this->data['Mensaje']['activo'] = true;
            $this->data['Mensaje']['usuario_creacion_id'] = $this->usuarioId();
            $this->data['Mensaje']['fecha_creacion'] = 'now()';
            $this->data['Mensaje']['para'] = str_replace(array(' ','|',','),array('',';',';'),$this->data['Mensaje']['para']);

            $mensajes = array();
            $mensajes[] = $this->data['Mensaje'];
            $para = explode(';',$this->data['Mensaje']['para']);
            $destinos = $this->Usuario->find('list',array(
                'fields'=>array('id'),'conditions'=>array('email'=>$para),'recursive'=>-1
            ));
            $destinos = $this->Aro->find('all',array(
                'fields'=>array('id'),'conditions'=>array('model'=>'Usuario','foreign_key'=>$destinos),'recursive'=>-1
            ));
            $this->Mensaje->begin();
            $done = true;
            foreach ($destinos as $destino){
                $this->data['Mensaje']['empresa_id'] = $this->empresaId();
                $this->data['Mensaje']['centro_dist_id'] = $this->centroDistId();
                $this->data['Mensaje']['aro_id'] = $destino['Aro']['id'];
                $this->data['Mensaje']['carpeta_id'] = 1; // bandeja de salida
                $mensajes[] = $this->data['Mensaje'];
                if (!$this->Mensaje->save($this->data)){
                    $done = false;
                    break;
                }
            }
            if ($done){
                $this->Mensaje->commit();
                $this->Session->setFlash('El mensaje ha sido enviado con exito');
                $this->redirect(array('action'=>'index'));
            } else {
                $this->Mensaje->rollback();
                $this->Session->setFlash('Se ha producido un error al enviar el mensaje');
                $this->redirect(array('action'=>'index'));
            }
        } else if (!empty($id)){
            $this->data = $this->Mensaje->find('first', array(
                'conditions'=>array('Mensaje.id'=>$id),
                'contain' => array(
                    'CentroDist'=>array(
                        'fields'=>array('descripcion','descripcion_corta','simbolo'),
                    ),
                    'Aro'=>array(
                        'fields'=>array('id','model','foreign_key'),
                    ),
                    'UsuarioCreacion'=>array(
                        'fields'=>array('email'),
                    )
                )
            ));
            $this->data['Mensaje']['de'] = $this->data['UsuarioCreacion']['email'];
        }
    }

    function delete($id = null, $verbose = true){
        if (empty($id)){
            $this->Session->setFlash('El Identiicador de mensaje no es valido');
            if ($verbose)
                $this->redirect(array('action'=>'index'));
            else return false;            
        }
        $this->Mensaje->recursive = -1;
        $mensaje = $this->Mensaje->read(null, $id);
        if ($mensaje['Mensaje']['carpeta_id'] == 4) {
            $mensaje['Mensaje']['activo'] = false;
            $mensaje['Mensaje']['usuario_borrado_id'] = $this->usuarioId();
            $mensaje['Mensaje']['fecha_borrado'] = 'now()';
        } else $mensaje['Mensaje']['carpeta_id'] = 4;

        $result = $this->Mensaje->save($mensaje);
        if ($result){
            $this->Session->setFlash('El Mensaje se ha eliminado con exito');
        } else {
            $this->Session->setFlash('Se ha producido un error al eliminar el Mensaje');
        }
        if ($verbose){
            $this->redirect(array('action'=>'index'));
        } else return $result;
    }

    function process(){        
        $action = 0;
        if (isset($this->params['form']['eliminar']))
            $action = 1;
        foreach($this->data as $data){
            if ($data['id'] == 0) continue;
            switch($action){
                case 1:
                    $result = $this->delete($data['Mensaje']['id'], false);
                    break;
            }
            if (!$result) break;
        }
        $this->redirect(array('action'=>'index'));
    }

    function escrituraEmpresa($id){
        $aro = $this->Aro->find('first', array( // obtengo el aro para el usuario activo
            'conditions'=>array('model'=>'Usuario','foreign_key'=>$this->_usuario['id']),
            'recursive'=>-1
        ));

        $empresas = $this->ArosEmpresa->find('first', array( // consulto si tiene privilegio sobre la empresa
            'conditions'=>array(
                'aro_id'=>$aro['Aro']['id'],
                'empresa_id'=>$data['Empresa']['id']
            ),
            'fields'=>array('escritura')
        ));
        
        if (isset($empresas['ArosEmpresa']['escritura'])){
            return $empresas['ArosEmpresa']['escritura'];
        } else {
            $aro = $this->Aro->find('first', array( // obtengo el aro del grupo al que pertenece el usuario activo
                'conditions'=>array('model'=>'Grupo','foreign_key'=>$this->_usuario['grupo_id']),
                'recursive'=>-1
            ));
            $empresas = $this->ArosEmpresa->find('first', array( // consulto si tiene privilegio sobre la empresa
                'conditions'=>array(
                    'aro_id'=>$aro['Aro']['id'],
                    'empresa_id'=>$id
                ), 
                'fields'=>array('escritura')
            ));
            if (isset($empresas['ArosEmpresa']['escritura']))
                return $empresas['ArosEmpresa']['escritura'];
            else
                return false;

        }
    }

    function away($controller = 'Home', $action = 'index', $id = null){
		
		//obteniendo todos loa parametros para la funcion destino
		$new_id = array();
		for ($i=2; $i<count($this->params['pass']); $i++){
			$new_id[] = $this->params['pass'][$i];
		}
		$id = implode('/', $new_id);
		if(count($this->params['url'])>1){
			$url_vars = '';
			$i = 0;
			//obteniendo todas las variables url para la funcion destino
			foreach($this->params['url'] as $key=>$value){
				if(0==$i++) continue;
				$url_vars .= $key . '=' . $value . '&';
			}
			$id .= '?'. preg_replace("/\&$/",'',$url_vars);
		}
		
		$this->set(compact('controller','action','id'));
    }

    function ajax(){
         if ($this->RequestHandler->isAjax() && !empty($this->params['form'])) {
            Configure::write('debug', 0); //quito el debugger
            $this->autoRender = false;//desabilito el auto dibujado
            $this->autoLayout = false;//desabilito el auto layout

            $usuario = $this->Session->read('Usuario');
            $ejercicio = $this->Session->read('Ejercicio');
            switch ($this->params['form']['action']){
                case 1: // empresa
                    $usuario['Tercero']['empresa_id'] = $this->params['form']['value'];

                    $this->Empresa->recursive = -1;
                    $data = $this->Empresa->find('first',array(
			'conditions'=>array('Empresa.id'=>$this->params['form']['value'])
                    ));
                    $usuario['Empresa'] = $data['Empresa'];
                    $usuario['Empresa']['escritura'] = escrituraEmpresa($this->params['form']['value']);
                    if (!$usuario['Empresa']['escritura']){
                        $this->Tercero->recursive = -1;
                        $tercero = $this->Tercero->read(null, $usuario['id']);
                        if ($usuario['Empresa']['id']==$tercero['Tercero']['empresa_id'])
                            $usuario['Empresa']['escritura'] = true;
                    }

                    $this->CentroDist->recursive = -1;
                    $data = $this->CentroDist->find('all',array(
                        'fields'=>array('CentroDist.id', 'CentroDist.descripcion'),
			'order'=>array('CentroDist.codigo'),
			'conditions'=>array('CentroDist.empresa_id'=>$this->params['form']['value'])
                    ));
                    $this->header('Content-Type: application/json');
                    echo json_encode($data);
                    break;
                case 2: // centro_dist
                    $usuario['Tercero']['centro_dist_id'] = $this->params['form']['value'];

                    $this->CentroDist->recursive = -1;
                    $data = $this->CentroDist->find('first',array(
                        'conditions'=>array('CentroDist.id'=>$this->params['form']['value'])
                    ));
                    $usuario['CentroDist'] = $data['CentroDist'];
                    $usuario['Tercero']['color'] = $data['CentroDist']['color'];
                    $usuario['CentroDist']['escritura'] = $this->escrituraCentroDist($this->params['form']['value']);
                    if (!$usuario['CentroDist']['escritura']){
                        $this->Tercero->recursive = -1;
                        $tercero = $this->Tercero->read(null, $usuario['id']);
                        if ($usuario['CentroDist']['id']==$tercero['Tercero']['centro_dist_id'])
                            $usuario['CentroDist']['escritura'] = true;
                    }
                    $result['Almacene'] = $this->getAlmacenes($usuario['CentroDist']['id'],true);
                    $result['color'] = $data['CentroDist']['color'];
                    $this->header('Content-Type: application/json');
                    echo json_encode($result);
					
                    break;
                case 3: // fecha
                    $date = $this->params['form']['value'];
                    $d = $date;
                    if ($date)
                        $date = split('/', $date);
                    else
                        $date = split('/', date('d/m/Y'));
                    // periodo y ejercicio
                    $ejer = $this->Ejercicio->find('first',array(
                        'fields'=>array('id','codigo','fecha_inicial','fecha_final'),
                        'conditions'=>array('empresa_id'=>$this->empresaId(),'codigo'=>$date[2]),
                        'recursive'=>-1
                    ));
                    if (!empty($ejer['Ejercicio']['id']))
                        $ejercicio = $ejer['Ejercicio'];
                    $ejercicio['Actual']['periodo_id'] = intval($date[1]);
                    $ejercicio['Actual']['fecha'] = $d;
                    $ejercicio['Actual']['dia'] = $date[0];
                    $ejercicio['Actual']['mes'] = $this->months[$date[1]-1];
                    $ejercicio['Actual']['anyo'] = $date[2];

                    $date = mktime(0, 0, 0, $date[1], $date[0], $date[2]);
                    $dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
                    $meses = array("","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
                    echo $dias[date('w', $date)].", ".date('j', $date)." de ".$meses[date('n', $date)]." del ".date('Y', $date);
                    
                    $now = date('j F Y',$date);
                    $now = strtotime($now);
                    $mark = strtotime('01 March 2011');
                    
                    if ($now < $mark) {
                        $usuario['Empresa']['igv'] = '19.00';
                    } else {
                        $emp = $this->Empresa->find('first',array(
                            'conditions'=>array(
                                'id'=>$usuario['Empresa']['id']
                            ),
                            'fields'=>array('id','igv'),
                            'recursive'=>-1
                        ));
                        $usuario['Empresa']['igv'] = $emp['Empresa']['igv'];
                    }
                    break;
                case 4: // cambio de carpeta
                    $ejercicio['Actual']['carpeta_id'] = $this->params['form']['value'];
                    break;
                case 5: // centro_dist               	                    
                    $ciudad = $this->CentroDist->find('list', array(
                    						'fields'=>array('id'),
                    						'conditions'=>array('CentroDist.ciudad'=>$this->_usuario['CentroDist']['ciudad'])));                    
					$result = $this->getAlmacenes($ciudad,true);
					$this->header('Content-Type: application/json');
					echo json_encode($result);
					
                    break;    
                case 6:
                	$ciudad = $this->CentroDist->find('list', array(
                    						'fields'=>array('id','descripcion_corta'),
                    						'conditions'=>array(                    							
                								'CentroDist.activo'=>true
                						)));                   
					$result = $ciudad;
					$this->header('Content-Type: application/json');
					echo json_encode($result);
					
                    break;
            }
//            $this->Session->destroy('Usuario');
//            $this->Session->destroy('Ejercicio');

            $this->Session->write('Usuario', $usuario);
            $this->Session->write('Ejercicio', $ejercicio);
        }
    }

    function autocomplete(){
        if ($this->RequestHandler->isAjax()) {
            Configure::write('debug', 0); //quito el debugger
            $this->autoRender = false;//desabilito el auto dibujado
            $this->autoLayout = false;//desabilito el auto layout
            
            $value = trim($_POST['query']);
            $value = str_replace(array(' ','|',',',';'),array('',';',';',';'),$value);
            $parts = explode(';',$value);
            $ilike = array();
            foreach($parts as $part){
                $ilike[] = 'Usuario.usuario ILIKE \''.$part.'%\'';
            }
            $data = $this->Usuario->find('all', array(
                'conditions'=> array(
                    'Usuario.activo'=>true,
                    'OR'=>$ilike,
                ),
                'recursive'=>-1
            ));
            $usuarios = Set::format($data, '{0}', array('{n}.Usuario.email'));
            foreach ($usuarios as $usuario){
                    $arrayMod[] = array("value" => $usuario);
            }
        }
        $this->_ajaxify($arrayMod);
    }
}






?>